As modern software becomes more complex, increasingly sophisticated techniques are used to test the functionality of the software. A common technique used in test automation is to map manual steps to an automated testing tool. A manual test, such as a series of actions performed using the software to be tested, is used to generate a regression test made of one or more scripts. The manual steps may be mapped to a script by “recording” the steps performed by a human operator, and “playing” those steps to test the software. The recorded steps may be, and often are, modified by an automation engineer to test similar steps, improve efficiency or accuracy, allow for re-use of the script, etc. The regression test is then run on the software and adjusted to further test additional features of the software, isolate errors encountered during the initial test, or make other adjustments to the regression test.
In general, a software program or package for which regression testing is to be performed may include multiple features, and a feature may include one or more sub-features. For example, a banking application may include the features of generating an invoice, updating a customer account, and processing a payment; the invoice feature may include a sub-feature such as generating a “quick invoice.” The combination of user input, processing, and navigation associated with a specific feature or sub-feature may be referred to as a functional flow.
When testing a piece of software, a “test flow” may refer to the section of actions, input, and navigations required to traverse a functional flow. As a specific example, a banking program may provide for printing a “quick invoice” by performance of the following actions by a user: selecting the application, entering a username and password, selecting “invoices” from a list of functions, selecting a “quick invoice” hyperlink, and selecting “print” from a function menu. This series of functions may be duplicated in a test flow by generating the appropriate selections, actions, and other input required to traverse the functional flow. For example, the actions may be encoded in a script which performs automated actions sufficient to activate each step in the functional flow when executed. To test one or more features in the software, the appropriate test flows may be performed within the software. A collection of scripts used to test one or more features may be referred to as a regression test or test suite.
Although typical regression test techniques are automated, each test suite is still unique to, or at least partially customized to a particular piece of software. In general, a test or test suite designed for one software application cannot be directly used to test a different application. This creates difficulty in estimating the amount of time that any particular test suite will require to create and deploy, since each application to be tested must be considered individually.